草庐IT

c++ - OpenCV Visual Studio ntdll.dll

全部标签

c - 如何从 ml64.exe(MSVC 64 位 X64 汇编程序)访问线程本地存储?

以下C函数尝试使用线程局部存储变量以线程安全的方式防止多核代码中的递归。但是,由于有些复杂的原因,我需要在X64汇编程序(IntelX86/AMD64位)中编写此函数,并使用VC2010中的ml64.exe进行汇编。如果我使用全局变量,我知道如何执行此操作,但我不确定如何使用具有__declspec(thread)的TLS变量正确执行此操作。__declspec(thread)inttls_VAR=0;voidnorecurse(){if(0==tls_VAR){tls_VAR=1;DoWork();tls_VAR=0;}}注意:这是VC2010踢出来的功能。但是,MASM(ml64.

c++ - C/C++ Windows - ExtractIcon() 不检索所有可执行文件的图标

这只是我正在做的事情的片段:PROCESSENTRY32pe32;pe32.dwSize=sizeof(PROCESSENTRY32);hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);if(hProcessSnap==INVALID_HANDLE_VALUE)return;if(!Process32First(hProcessSnap,&pe32)){CloseHandle(hProcessSnap);//cleanthesnapshotobjectreturn;}do{hProcess=OpenProcess(P

c - 在 C 中,多线程,多个窗口调用一个窗口过程,每次调用都会使用新的局部变量还是我需要互斥体?

我试图在标题中解释这一切:我有一个多线程C程序,它将有多个窗口调用一个窗口过程。在窗口过程中完成了一些处理。我是否需要保护它,或者每次调用窗口过程都会在内存中分开?我的直觉是我不需要互斥锁,因为它们都是局部变量,这是错误的吗?LRESULTAPIENTRYEditSubclassProc(HWNDhwnd,UINTuMsg,WPARAMwParam,LPARAMlParam){if(uMsg==WM_GETDLGCODE)returnDLGC_WANTALLKEYS;elseif(uMsg==WM_CHAR){if((int)wParam==13){char*strCurrentCom

c - 解码文件

#include#includeconstintKEY=111;voidencryptStrA(char*sometext){intlength;length=strlen(sometext);for(inti=0;i我避开了一些棘手的事情文件以二进制模式打开在encryptStrA中,strlen函数没有直接放在循环条件中尽管如此,它仍然一直在输出“Hell”而不是“HelloWorld!”?更准确的说,是看到关键人物之后就全部砍掉。这是什么原因?我使用的操作系统中的每一行文本都以回车符(ASCII13)和换行符(10)结尾。 最佳答案

c - 如何使用句柄检索流程描述和公司名称?

如何使用句柄检索过程描述和公司名称。我正在使用WindowsAPI函数。 最佳答案 版本(和版权)信息存储在文件版本信息中。您可以使用GetFileVersionInfo获取它们功能。可以通过简单调用GetFileVersionInfo来检索版本以填充VS_FIXEDFILEINFO结构,但版权信息(在您的情况下为ProductName和CompanyName)存储在本地化/可本地化的文本字段中。例如看VerQueryValue功能。 关于c-如何使用句柄检索流程描述和公司名称?,我们在

windows - Windows 资源管理器使用哪些 DLL 文件?

我需要知道Windows资源管理器为项目使用了哪些库(WindowsShell)。是的,它显然使用了shell32.dll但还有其他什么? 最佳答案 您可以使用DependencyWalker查看Explorer引用的内容。 关于windows-Windows资源管理器使用哪些DLL文件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10974866/

c - 通过随机重命名覆盖 Windows 中的文件失败

我有一个文本文件,我想通过将其重写为临时文件然后覆盖原始文件来进行编辑。这段代码没有这样做,因为它被简化了,但它确实包含了我遇到的问题。在Windows上,当重命名函数失败时,EXAMPLE.TXT文件将在看似随机的运行次数后消失。我不知道为什么,但到目前为止它在Linux上运行良好。为什么会发生这种情况,我该如何从完全不同的方向解决它,例如在不重命名的情况下从程序中覆盖原始文件?此外,还有哪些其他更好的方法?此方法在Windows上还有其他缺陷,例如程序在调用remove之后但在重命名之前被用户关闭,这在Linux上不会有问题(在删除remove之后)?#include#includ

c++ - LoadLibrary貌似加载错误的DLL

我在使用Windows上的LoadLibrary时遇到了一个奇怪的问题。首先是一些背景。这个应用程序依赖于Qt,而Qt被拆分成几个库。我正在尝试升级Qt的版本,但不会破坏任何人。较新的Qt库向后兼容旧的。这意味着如果加载新版本,则使用旧版本构建的应用程序可以运行。反之则不然——如果加载旧版本,使用新版本构建的应用程序将缺少符号。QtDLL位于特定于版本的目录中(比如c:\qt\qt-4.5.2\lib和c:\qt\qt-4.8.1\lib作为示例)。大多数开发人员在他们的PATH中还有一个公共(public)目录,其中包含我们使用的所有第三方库的“当前”版本(称为c:\common\l

c++ - Winapi shell 扩展覆盖 Windows 命令

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我为我正在开发的一个小应用程序开发了一个非常基本的shell扩展。我已经使用它一段时间了,没有任何问题,但我只是注意到在Windowsxp中,在开始菜单->所有程序中,如果我右键单击那里的一个文件夹并选择“打开”或“探索”,我的小应用程序出现而不是资源管理器窗口。你可以想象,当我看到这一幕时,我是多么的高兴和自豪。我觉得这很奇怪,因为这是唯一发生这种情况的地方(到目前为止......)。我在“目

.net - 在哪里可以找到并下载不同版本的 mscorwks.dll 和 mscordacwks.dll?

我正在尝试习惯使用WinDbg来解决崩溃转储问题,但每次我这样做时,它似乎都在要求我提供不同版本的mscorwks.dll和mscordacwks.dll,而且我并不总是能够访问转储来自的机器。除了告诉最终用户他们必须在他们的Windows目录中四处挖掘这些文件并向我发送一个大得离谱的“迷你”-dump之外,是否有什么地方可以让我获得这些文件的不同版本的副本?WinDbg似乎无法通过Microsoft的符号服务器找到它们。 最佳答案 您应该从捕获此转储的机器上获取mscordacwks.dll,然后将其重命名为WinDbg期望的名称